package com.xue.tools;


import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class DateTest {
    public static void main(String[] args) {
        //test01();
        //test02();
        test03();
    }

    /**
     * 将字符串类型的日期转换为日期对象
     *
     * @param strDate 字符串类型的日期
     * @param pattern 字符串的格式
     * @return 日期对象
     */
    private static Date convertString2Date(String strDate,String pattern){
        // 返回值:默认值为null
        Date date = null;
        if (pattern==null){
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        //进行转换工作
        try {
            date = sdf.parse(strDate);
            } catch (Exception e) {
                // 如果发生异常，此处进行异常的日志记录
                System.out.println("日期转换发生了问题");
            }

        return date;
    }


    /**
     * 将日期对象转换为指定格式的日期字符串
     *
     * @param date 被转换的日期对象
     * @param pattern 字符串的转换格式
     * @return 指定格式的日期字符串
     */
    private static String convertDate2String(Date date,String pattern){
        // 返回值:默认值为""
        String strDate = "";
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        strDate = sdf.format(date);
        return strDate;
    }

    /**
     * 日期类应用
     */
    private static void test03(){
        Date date0=new Date();
        Calendar calendar0=Calendar.getInstance();
        calendar0.set(2017,1,14);
        //"2017-02-14"(字符串类型)转化为日期类型
        System.out.println(calendar0.getTime().toString());

        System.out.println("=================================");
        String strDate= "2017-02-14 14:25:35";//字符串类型
        Date date1=convertString2Date(strDate,null);
        System.out.println("转换之后的日期：" + convertDate2String(date1,"yyyy-MM-dd HH:mm:ss"));

        System.out.println("转换之后的日期：" + convertDate2String(date1,"yy年MM月dd号 HH小时mm分钟ss秒"));
        System.out.println(convertDate2String(new Date(),"今天是yyyy年中的第w周，是这一年的第D天"));
    }








    /*
     * 数学工具类math
     * */
    private static void test02(){
        double val0=3.14;
        System.out.println("ceil::"+Math.ceil(val0));
        System.out.println("floor::"+Math.floor(val0));
           /*
           * ceil::4.0
           * floor::3.0
           * */

    }
    /*
     * 日期对象工具类
     * */
    private static void test01(){
        //date类  导入包：快捷键：Alt+Enter
        Date date0=new Date();
        System.out.println("date::"+date0);
        /*
        *   Fri Feb 15 17:53:11 CST 2019
        *   星期 月份 日  时间  时区  年
        * */


        //Calendar是抽象类
        // Calendar calendar=new Calendar(); 抽象类不能直接new
        Calendar calendar=Calendar.getInstance();//静态方法
        /*
        * 静态方法与单例模式异曲同工 的效果
        *  用private把构造方法关了
        * */
        Date date1=calendar.getTime();
        System.out.println("Calendar::"+date1);

        System.out.println("当前是几点？答曰："+calendar.get(Calendar.HOUR));
        //Calendar的月份是从0-11表示一月到十二月，其他参数都是从1开始
        System.out.println("当前是几月？答曰："+calendar.get(Calendar.MONTH));
    }
}
